home *** CD-ROM | disk | FTP | other *** search
- //
- // CITGadget include
- //
- // StormC
- //
- // version 2002.02.02
- //
-
- #ifndef CIT_GADGET_H
- #define CIT_GADGET_H TRUE
-
- #include <intuition/gadgetclass.h>
- #include <gadgets/layout.h>
- #include <images/label.h>
-
- #include "CITRootClass.h"
-
- //
- // These three enums are for internal use
- //
- enum
- {
- CITGADGET_ID = 0,
- CITGADGET_POSITION_X,
- CITGADGET_POSITION_Y,
- CITGADGET_WIDTH,
- CITGADGET_HEIGHT,
- CITGADGET_DISABLED,
- CITGADGET_SELECTED,
- CITGADGET_TEXT,
- CITGADGET_RELVERIFY,
- CITGADGET_FOLLOWMOUSE,
- CITGADGET_TABCYCLE,
- CITGADGET_GADGETHELP,
- CITGADGET_READONLY,
- CITGADGET_UNDERSCORE,
- CITGADGET_TEXTATTR,
- CITGADGET_LAST
- };
-
- enum
- {
- CITGADLABEL_FONT,
- CITGADLABEL_FOREGROUNDPEN,
- CITGADLABEL_BACKGROUNDPEN,
- CITGADLABEL_MODE,
- CITGADLABEL_SOFTSTYLE,
- CITGADLABEL_JUSTIFICATION,
- CITGADLABEL_TEXT,
- CITGADLABEL_LAST
- };
-
- enum
- {
- CITGADCHILD_MINWIDTH,
- CITGADCHILD_MINHEIGHT,
- CITGADCHILD_MAXWIDTH,
- CITGADCHILD_MAXHEIGHT,
- CITGADCHILD_NOMINALSIZE,
- CITGADCHILD_WEIGHTEDWIDTH,
- CITGADCHILD_WEIGHTEDHEIGHT,
- CITGADCHILD_WEIGHTMINIMUM,
- //CITGADCHILD_SCALEDWIDTH,
- //CITGADCHILD_SCALEDHEIGHT,
- CITGADCHILD_LAST
- };
-
-
- class CITGadget:public CITRootClass
- {
- public:
- CITGadget();
- ~CITGadget();
-
- void Position(int x,int y);
- void Size(int w, int h);
- void Disabled(BOOL b = TRUE)
- {setGadgetTag(CITGADGET_DISABLED,GA_Disabled,b);}
- void Selected(BOOL b = TRUE)
- {setGadgetTag(CITGADGET_SELECTED,GA_Selected,b);}
- void Activate();
- void Text(char* t)
- {setGadgetTag(CITGADGET_TEXT,GA_Text,ULONG(t));}
- void RelVerify(BOOL b = TRUE)
- {setGadgetTag(CITGADGET_RELVERIFY,GA_RelVerify,b);}
- void FollowMouse(BOOL b = TRUE)
- {setGadgetTag(CITGADGET_FOLLOWMOUSE,GA_FollowMouse,b);}
- void TabCycle(BOOL b = TRUE)
- {setGadgetTag(CITGADGET_TABCYCLE,GA_TabCycle,b);}
- void GadgetHelp(BOOL b = TRUE)
- {setGadgetTag(CITGADGET_GADGETHELP,GA_GadgetHelp,b);}
- void ReadOnly(BOOL b = TRUE)
- {setGadgetTag(CITGADGET_READONLY,GA_ReadOnly,b);}
- void Underscore(char c)
- {setGadgetTag(CITGADGET_UNDERSCORE,GA_Underscore,c);}
-
- void MinWidth(ULONG w)
- {setChildTag(CITGADCHILD_MINWIDTH,CHILD_MinWidth,w);}
- void MinHeight(ULONG h)
- {setChildTag(CITGADCHILD_MINHEIGHT,CHILD_MinHeight,h);}
- void MaxWidth(ULONG w)
- {setChildTag(CITGADCHILD_MAXWIDTH,CHILD_MaxWidth,w);}
- void MaxHeight(ULONG h)
- {setChildTag(CITGADCHILD_MAXHEIGHT,CHILD_MaxHeight,h);}
- void NominalSize(BOOL b = TRUE)
- {setChildTag(CITGADCHILD_NOMINALSIZE,CHILD_NominalSize,b);}
- void WeightedWidth(ULONG w)
- {setChildTag(CITGADCHILD_WEIGHTEDWIDTH,CHILD_WeightedWidth,w);}
- void WeightedHeight(ULONG h)
- {setChildTag(CITGADCHILD_WEIGHTEDHEIGHT,CHILD_WeightedHeight,h);}
- void WeightMinimum(BOOL b = TRUE)
- {setChildTag(CITGADCHILD_WEIGHTMINIMUM,CHILD_WeightMinimum,b);}
- //void ScaledWidth(UWORD w)
- // {setChildTag(CITGADCHILD_SCALEDWIDTH,CHILD_ScaledWidth,w);}
- //void ScaledHeight(UWORD h)
- // {setChildTag(CITGADCHILD_SCALEDHEIGHT,CHILD_ScaledHeight,h);}
-
- void LabelFont(struct TextAttr* attr)
- {setLabelTag(CITGADLABEL_FONT,IA_Font,ULONG(attr));}
- void LabelForegroundPen(LONG pen)
- {setLabelTag(CITGADLABEL_FOREGROUNDPEN,IA_FGPen,pen);}
- void LabelBackgroundPen(LONG pen)
- {setLabelTag(CITGADLABEL_BACKGROUNDPEN,IA_BGPen,pen);}
- void LabelMode(UBYTE mode);
- void LabelSoftStyle(UBYTE style)
- {setLabelTag(CITGADLABEL_SOFTSTYLE,LABEL_SoftStyle,style);}
- void LabelJustification(UWORD pos)
- {setLabelTag(CITGADLABEL_JUSTIFICATION,LABEL_Justification,pos);}
- void LabelText(char* text)
- {setLabelTag(CITGADLABEL_TEXT,LABEL_Text,ULONG(text));}
- void Id(ULONG GadgetID);
-
- void CallbackHook(ULONG (*p)(APTR,APTR,ULONG),ULONG userData);
- void CallbackHook(void *that, void *p,ULONG userData);
-
- virtual void EventHandler(void (*p)(ULONG Id));
- virtual void EventHandler(void *that, void *p);
-
- protected:
- virtual BOOL Create(CITWindow* CITWd,class CITRootClass* parent);
- virtual void Delete();
- virtual Object* NewObjectA(TagItem* tags);
-
- virtual void HandleEvent(ULONG result,UWORD code);
- virtual void GadgetEvent(ULONG result,UWORD code);
-
- virtual ULONG hookEntry(struct Hook* inputHook,APTR object,APTR msg);
- virtual void hookSetup(ULONG userData);
-
- struct Hook* createHook(ULONG userData);
-
- void *eventThat;
- union
- {
- void (*Proc0)(ULONG Id);
- void (*Proc1)(void* that,ULONG Id);
- } event;
-
- void *callbackThat;
- union
- {
- ULONG (*proc0)(APTR,APTR,ULONG);
- ULONG (*proc1)(void* that,APTR,APTR,ULONG);
- } callback;
-
- ULONG gadgetID;
-
- private:
- friend ULONG cppHookEntry(struct CITHook*,APTR,APTR);
-
- void setGadgetTag(int index,ULONG attr,ULONG val);
- void setChildTag(int index,ULONG attr,ULONG val);
- void setLabelTag(int index,ULONG attr,ULONG val);
- void SetUp();
- void CleanUp();
-
- struct Hook* hook;
-
- TagItem* gadgetTag;
- TagItem* labelTag;
- TagItem* childTag;
- };
-
- typedef ULONG (*CALLBACKHOOK)(APTR,APTR,ULONG);
-
- #endif
-